package cn.tedu.spotms.server.mapper;

import cn.tedu.spotms.server.pojo.entity.Role;
import cn.tedu.spotms.server.pojo.vo.RoleListItemVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;

@Repository
public interface RoleMapper {

    /**
     * 添加角色
     * @param role 角色信息
     * @return 受影响的行数
     */
    int insert(Role role);

    /**
     * 给角色设置权限
     * @param roleId 角色id
     * @param permissions 权限的集合
     * @param time 设置时间
     * @return 受影响的行数
     */
    int insertPermissionsById(@Param("roleId") Long roleId, @Param("permissions") List<Long> permissions, @Param("time") LocalDateTime time);

    /**
     * 根据角色id删除匹配的权限信息
     * @param id 角色id
     * @return 受影响的行数
     */
    int deletePermissionsById(Long id);

    /**
     * 根据id修改最后修改时间
     * @param id 角色id
     * @return 受影响的行数
     */
    int updateGmtModifiedById(@Param("id") Long id, @Param("gmtModified") LocalDateTime gmtModified);

    /**
     * 根据id查询角色信息
     * @param id id
     * @return 角色信息
     */
    RoleListItemVO getById(Long id);

    /**
     * 根据名字查询角色信息
     * @param name 名字
     * @return 角色信息
     */
    RoleListItemVO getByName(String name);

    /**
     * 角色信息列表
     * @return 列表
     */
    List<RoleListItemVO> list();

    /**
     * 根据角色id查询权限id集合
     * @param id 角色id
     * @return 权限id集合
     */
    List<Long> getPermissionsById(Long id);
}
